home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / ip / dns / rovers / Displays / xdisplay2.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-01-22  |  8.9 KB  |  260 lines

  1. #include <stdio.h>
  2.  
  3. /* Motif Include Files */
  4. #include "motif.h"
  5. #include "../ProblemManager/ProblemFileio.h"
  6. #include "../InetRover/Hostfileio.h"
  7.  
  8. static char *DefaultPingkyDir=".//";
  9. char *pingkydir,InetHfile[100],InetPfile[100],MeritPfile[100],InetLogFile[100];
  10. Widget toplevel;        /* Mother of all widgets */
  11. Widget pane,text1,text2;    /* Define our application widgets */
  12. Widget viewdialog,dialogmain,text,donepb,viewpane;
  13.  
  14. UpdateScreen()
  15. {
  16. struct ProblemType ProblemArray[100];
  17. int NumProblems;
  18. int i;
  19. static char panebuffer[5000],buffer[100],outstr[100];
  20.  
  21.     NumProblems=ReadProblemFile( ProblemArray, InetPfile );
  22.         strcpy( panebuffer, "" );
  23.         for( i=0; i<NumProblems; i++ ) {
  24.                 strcpy( buffer, ProblemArray[i].Name ); strcat( buffer, " ");
  25.                 strcat( buffer, ProblemArray[i].UniqueID );strcat( buffer, " ");
  26.                 strcat( buffer, ProblemArray[i].TestName );
  27.                 sprintf( outstr,"%2.2d %s_%s %-40s %-18s\n",i+1,
  28.             _Day(ProblemArray[i].TimeStamp),
  29.             _Time(ProblemArray[i].TimeStamp),
  30.             buffer,ProblemArray[i].StatusLine );
  31.                 strcat( panebuffer, outstr );
  32.         }
  33.         XmTextSetString( text1, panebuffer );
  34.     NumProblems=ReadProblemFile( ProblemArray, MeritPfile );
  35.         strcpy( panebuffer, "" );
  36.         for( i=0; i<NumProblems; i++ ) {
  37.                 strcpy( buffer, ProblemArray[i].Name ); strcat( buffer, " ");
  38.                 strcat( buffer, ProblemArray[i].UniqueID );strcat( buffer, " ");
  39.                 strcat( buffer, ProblemArray[i].TestName );
  40.                 sprintf( outstr,"%2.2d %s_%s %-40s %-18s\n",i+1,
  41.             _Day(ProblemArray[i].TimeStamp),
  42.             _Time(ProblemArray[i].TimeStamp),
  43.             buffer,ProblemArray[i].StatusLine );
  44.                 strcat( panebuffer, outstr );
  45.         }
  46.         XmTextSetString( text2, panebuffer );
  47.  
  48. }
  49.  
  50. Refresh()
  51. {
  52.     UpdateScreen();
  53.     XtAddTimeOut( 20*1000, Refresh, NULL );
  54. }
  55.  
  56.  
  57. Quit()
  58. {
  59. extern int In_Critical_Section;
  60.  
  61.     if ( In_Critical_Section ) return;
  62.     exit(0);
  63. }
  64.  
  65. DoneView()
  66. {
  67.  
  68.     XtUnmanageChild( dialogmain );
  69. }
  70.  
  71. ViewLfile()
  72. {
  73. Arg myArgs[10];
  74. Cardinal n=0;
  75.  
  76. Widget dialog,filesel;
  77.  
  78.        n=0;
  79.        XtSetArg( myArgs[n], XmNallowResize, True ); n++;
  80.        dialog = XmCreateDialogShell( toplevel, "InetRover_Problem_Log", myArgs, n );
  81.  
  82.     printf("Filter=%s\n",InetLogFile );
  83.        n=0;
  84.        XtSetArg( myArgs[n], XmNdirMask, XmStringCreateLtoR(InetLogFile,XmSTRING_DEFAULT_CHARSET) ); n++;
  85.        /*XtSetArg( myArgs[n], XmNdirMask, XmStringCreateLtoR("problemlog.*",XmSTRING_DEFAULT_CHARSET) ); n++;*/
  86.        filesel = XmCreateFileSelectionBox( dialog, "filesel", myArgs, n );
  87.        XtManageChild( filesel );
  88.  
  89. }
  90.  
  91. ViewHfile()
  92. {
  93. int i,j,k;
  94. Arg myArgs[10];
  95. Cardinal n=0;
  96. static struct NodeType *Node;
  97. extern int NumNodes;
  98. char buffer[160], FileBuffer[60000];
  99. XmString hostlist[1000];
  100. Cardinal hostlistcount=0;
  101. Widget menubar,cascade,pulldown;
  102.  
  103.     Node = ReadNodeFile( InetHfile );
  104.  
  105.     strcpy( FileBuffer, "" );
  106.     for( i=0; i<NumNodes; i++ ) {
  107.         sprintf( buffer, "%-20s %-16s %-20s Tests: ",Node[i].NodeName,Node[i].UniqueID,Node[i].Helpfilename );
  108.         strcat( FileBuffer, buffer );
  109.         for( j=0; Node[i].Test[j].argv[0][0]!='\0' && j<MAXTESTS; j++ ) {
  110.             strcat(FileBuffer, Node[i].Test[j].argv[0] );
  111.             strcat(FileBuffer, "(");
  112.             for( k=1; Node[i].Test[j].argv[k]!=NULL && k<MAXARGS; k++ ) {
  113.                 strcat(FileBuffer, Node[i].Test[j].argv[k] );
  114.                 if (Node[i].Test[j].argv[k+1]!=NULL)
  115.                     strcat(FileBuffer, " ");
  116.             }
  117.             strcat(FileBuffer, ") ");
  118.         }
  119.         hostlist[hostlistcount++]=XmStringCreateLtoR( FileBuffer , XmSTRING_DEFAULT_CHARSET );
  120.         
  121.         strcat( FileBuffer, "\n");
  122.         strcpy(FileBuffer,"");
  123.     }
  124.  
  125.     n=0;
  126.     XtSetArg( myArgs[n], XmNallowResize, True ); n++;
  127.     viewdialog = XmCreateDialogShell( toplevel, "Internet_Rover_HostFile", myArgs, n );
  128.  
  129.     n=0;
  130.     XtSetArg( myArgs[n], XmNshowSeparator, True ); n++;
  131.     dialogmain = XmCreateMainWindow( viewdialog, "viewmain", myArgs, n );
  132.        menubar = XmCreateMenuBar(dialogmain,         /* Parent       */
  133.                                 "vmenubar",      /* Name         */
  134.                                 myArgs,         /* Widget Args  */
  135.                                 0 );            /* # Widget Args*/
  136.         XtManageChild( menubar );
  137.         pulldown = XmCreatePulldownMenu(menubar,/* Parent       */
  138.                                 "vpulldown",     /* Name         */
  139.                                 myArgs,         /* Widget Args  */
  140.                                 0 );            /* # Widget Args*/
  141.         XtSetArg( myArgs[0], XmNsubMenuId, pulldown );
  142.         cascade = XmCreateCascadeButton( menubar, "Commands", myArgs, 1 );
  143.         XtManageChild( cascade );
  144.     donepb = XmCreatePushButtonGadget(pulldown,/* Parent       */
  145.                                 "done",        /* Name         */
  146.                                 myArgs,        /* Widget Args  */
  147.                                 0 );           /* # Widget Args*/
  148.     XtAddCallback( donepb, XmNactivateCallback, DoneView, NULL );
  149.     XtManageChild( donepb );
  150.  
  151.     n=0;
  152.     XtSetArg( myArgs[n], XmNlistItems, hostlist  ); n++;
  153.     XtSetArg( myArgs[n], XmNlistItemCount, hostlistcount  ); n++;
  154.     XtSetArg( myArgs[n], XmNlistVisibleItemCount, 20 ); n++;
  155.     text = XmCreateSelectionBox( dialogmain, "text", myArgs, n );
  156.     XtManageChild( text );
  157.  
  158.     XtManageChild( dialogmain );
  159. }
  160.  
  161. char *programname;
  162.  
  163. main( argc, argv )
  164. int argc;
  165. char *argv[];
  166. {
  167. Arg    myArgs[10];
  168. Cardinal i;
  169. char *getenv(),*rindex();
  170. Widget pb,menubar,pulldown,cascade,pulldown2,cascade2,logpb,hfilepb;
  171.  
  172.     programname=argv[0];
  173.     if ((pingkydir=getenv("PINGKYDIR"))==NULL) pingkydir=DefaultPingkyDir;
  174.     *rindex(pingkydir,'/')='\0';
  175.     strcpy(InetPfile,pingkydir);strcat(InetPfile,"/InetRover/PROBLEM.FILE");
  176.     strcpy(InetHfile,pingkydir); strcat( InetHfile,"/InetRover/hostfile");
  177.     strcpy(InetLogFile,pingkydir); strcat( InetLogFile,"/InetRover/problemlog.*");
  178.     strcpy(MeritPfile,pingkydir); strcat( MeritPfile,"/MeritRover/PROBLEM.FILE");
  179.  
  180.  
  181.     toplevel = XtInitialize(argv[0],    /* ShellName    */
  182.                 "XDisplay2",    /* Application Class */
  183.                 NULL,        /* Options    */
  184.                 0,        /* Num Options    */
  185.                 &argc,        /* Num Args     */
  186.                 argv );        /* Arg List    */
  187.  
  188.     pane = XmCreatePanedWindow( toplevel,    /* Parent     */
  189.                 "pane",        /* Name        */
  190.                 myArgs,        /* Widget Args  */
  191.                 0 );        /* # Widget Args*/
  192.     XtManageChild( pane );
  193.  
  194.     menubar = XmCreateMenuBar(pane,        /* Parent       */
  195.                                 "menubar",    /* Name         */
  196.                                 myArgs,         /* Widget Args  */
  197.                                 0 );            /* # Widget Args*/
  198.     XtManageChild( menubar );
  199.  
  200.     pulldown = XmCreatePulldownMenu(menubar,/* Parent       */
  201.                                 "pulldown",     /* Name         */
  202.                                 myArgs,         /* Widget Args  */
  203.                                 0 );            /* # Widget Args*/
  204.     XtSetArg( myArgs[0], XmNsubMenuId, pulldown );
  205.     cascade = XmCreateCascadeButton( menubar, "Commands", myArgs, 1 );
  206.     XtManageChild( cascade );
  207.     pb = XmCreatePushButtonGadget(pulldown,/* Parent       */
  208.                                 "quit",        /* Name         */
  209.                                 myArgs,        /* Widget Args  */
  210.                                 0 );           /* # Widget Args*/
  211.     XtManageChild( pb );
  212.     XtAddCallback( pb, XmNactivateCallback, Quit, NULL );
  213.  
  214.     pulldown2 = XmCreatePulldownMenu(menubar,/* Parent       */
  215.                                 "pulldown2",     /* Name         */
  216.                                 myArgs,         /* Widget Args  */
  217.                                 0 );            /* # Widget Args*/
  218.     XtSetArg( myArgs[0], XmNsubMenuId, pulldown2 );
  219.     cascade2 = XmCreateCascadeButton( menubar, "View", myArgs, 1 );
  220.     XtManageChild( cascade2 );
  221.  
  222.     logpb = XmCreatePushButtonGadget(pulldown2,/* Parent       */
  223.                                 "Logs",        /* Name         */
  224.                                 myArgs,        /* Widget Args  */
  225.                                 0 );           /* # Widget Args*/
  226.     XtAddCallback( logpb, XmNactivateCallback, ViewLfile, NULL );
  227.     hfilepb = XmCreatePushButtonGadget(pulldown2,/* Parent       */
  228.                                 "Configfile",        /* Name         */
  229.                                 myArgs,        /* Widget Args  */
  230.                                 0 );           /* # Widget Args*/
  231.     XtAddCallback( hfilepb, XmNactivateCallback, ViewHfile, NULL );
  232.     XtManageChild( logpb );
  233.     XtManageChild( hfilepb );
  234.  
  235.     i=0;
  236.         XtSetArg( myArgs[i], XmNwidth, 500); i++;
  237.         XtSetArg( myArgs[i], XmNheight, 300 ); i++;
  238.  
  239.     text1 = XmCreateText( pane,    /* Parent     */
  240.                 "text1",    /* Name        */
  241.                 myArgs,        /* Widget Args  */
  242.                 i );        /* # Widget Args*/
  243.     XtManageChild( text1 );
  244.     text2 = XmCreateText( pane,    /* Parent     */
  245.                 "text2",    /* Name        */
  246.                 myArgs,        /* Widget Args  */
  247.                 i );        /* # Widget Args*/
  248.     XtManageChild( text2 );
  249.     
  250.     /****************************
  251.      * Power on the Application *
  252.      ****************************/
  253.     XtRealizeWidget( toplevel );    /* Bring up & manage toplevel widget */
  254.     UpdateScreen();
  255.     XtAddTimeOut( 20*1000, Refresh, NULL );
  256.     XtMainLoop();            /* Main Event handler loop    */
  257.  
  258. }
  259.  
  260.